def linear_warmup_learning_rate(current_step, warmup_steps, base_lr, init_lr):
    """
    Linear warmup learning rate.

    线性学习率预热：学习率从非常小的数值线性增加到预设值。
    lr_inc为每次变化的学习率，其计算公式为：lrinc=\\left ( baselr- initlr \\right )  {\\div} warmupsteps
    得到lr_inc后可得当前的学习率的计算公式为：initlr +  lrinc\\times currentstep

    Args:
        current_step(int): 当前步数
        warmup_steps(int): 需要预热的步数
        base_lr(float): 预设的学习率
        init_lr(float): 初始的学习率

    Returns:
        learning_rate, 当前学习率

    Examples:
        >>> linear_warmup_learning_rate(1, 100, 1.0, 0)
        <<< 0.01
    """
    # 学习率为float类型，lr_inc为每次变化的学习率
    lr_inc = (float(base_lr) - float(init_lr)) / float(warmup_steps)
    # 当前学习率为初始学习率＋每次增加的学习率×当前步数（线性计算）
    learning_rate = float(init_lr) + lr_inc * current_step
    return learning_rate